# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.CloudRun.V1alpha1.Model.KeyToPath do
  @moduledoc """
  Maps a string key to a path within a volume.

  ## Attributes

  *   `key` (*type:* `String.t`, *default:* `nil`) - The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version. The key to project.
  *   `mode` (*type:* `integer()`, *default:* `nil`) - (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
  *   `path` (*type:* `String.t`, *default:* `nil`) - The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :key => String.t() | nil,
          :mode => integer() | nil,
          :path => String.t() | nil
        }

  field(:key)
  field(:mode)
  field(:path)
end

defimpl Poison.Decoder, for: GoogleApi.CloudRun.V1alpha1.Model.KeyToPath do
  def decode(value, options) do
    GoogleApi.CloudRun.V1alpha1.Model.KeyToPath.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.CloudRun.V1alpha1.Model.KeyToPath do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
